/**
 * アプリケーションコントローラ用クラスを定義する
 * Senchaの共通コントローラクラスから継承し、画面イベントに伴う画面遷移などを制御する
 */ 
jp.bbcs.rssclient.controllers.appController = new Ext.Controller({
	
	/**
	 * 設定画面を表示する
	 * @param options 表示時のオプション（animation:アニメション設定）
	 */
	setting: function(options) {
		_viewport.setActiveItem(
			_viewport.settingsPage, options.animation
		);	
	},

	/**
	 * ニュース一覧画面を表示する
	 * @param options 表示時のオプション（animation:アニメション設定）
	 */
	list: function(options) {
		_viewport.setActiveItem(
			_viewport.newsListPage, options.animation
		);
		_viewport.newsListPage.generateTabItems(true);
	},
	
	/**
	 * ニュース詳細画面を表示する
	 * @param options 表示時のオプション（data:ニュース詳細data, animation:アニメション設定）
	 */
	detail: function(options) {
		// ニュースの詳細データを取得
		var data = options.data;
		// 詳細データを詳細画面に更新
		_viewport.newsDetailPage.update(data);
		
		// 詳細画面表示
		_viewport.setActiveItem(
			_viewport.newsDetailPage, options.animation
		);
	},
	/**
	 * フィードを追加する
	 * @param options
	 */
	addfeed: function(options) {
		var url = options.url;


		var tryFeedStore = Ext.getStore('tryFeedStore');
		if(tryFeedStore == null) {
			tryFeedStore = new Ext.data.Store({
				storeId: 'tryFeedStore',
				fields:[
					{name: 'title', type: 'string'}
				]
			});
		}
		tryFeedStore.setProxy(
			new Ext.data.ScriptTagProxy(
					{
						autoDestroy: true,
						url: 'https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=' + url, 
						reader: {
							type: 'json',
							root: function(response) {
								if(response.responseData != null && response.responseData.feed != null) {
									var title = response.responseData.feed.title;
									var url = response.responseData.feed.feedUrl;									
									var feedStore = Ext.getStore('feedStore');;
									
									var count = feedStore.getCount();
									if(count > 0) {
										var group = feedStore.getAt(count - 1).data;
										if(group.feeds == null) {
											group.feeds = [];
										}
										var length = group.feeds.length;
										group.feeds[length] = {'id': 'custom' + length, 'name': title, 'url': url, 'subscried': true};
									}
								} else {
									alert("invalid feed");
								}
							}
						}
					}
				)
		);
		tryFeedStore.load();
	}
});